package com.equipment;

import com.util.EncodingUtil;

/**
 * 发送取随机数指令 FDA4
 *
 * @version 1.18
 * @author 刘亚东
 *
 */
public class GetRandomRequest {

	private String STX = "55AA"; // 帧开始标志
	private String RSCTL = "00"; // 串口帧序列号
	private String Length = ""; // 长度
	private String code = "FD"; // 代码
	private String broadening = "A4"; // 扩展代码
	private String BCC = ""; // 异或校验值

	private String dir = ""; // 目录：0表示系统根目录，1表示DF01目录，2表示卡根目录，3表示卡DF01目录，4表示金逸老标签（0x00或0x10）获取随机数
	private String RandomLen = ""; // 要读取的随机数长度(4)

	/**
	 * 发送A4指令
	 *
	 * @param dirCode
	 *            要取得目录
	 * @param RandomL
	 *            要取得随机数长度(字节单位)
	 * @return
	 */
	public String command(String dirCode, String RandomL) {
		dir = EncodingUtil.desToHex(Integer.parseInt(dirCode), 2); // 00表示系统根目录
		// 01表示DF01目录编号
		RandomLen = EncodingUtil.desToHex(Integer.parseInt(RandomL), 2); // 随机数长度
		// -----------------------------------------------------------------------------
		// DATA由代码+扩展子代码+目录编号+随机数长度按顺序拼接组成
		Length = EncodingUtil.desToHex(
				(broadening + dir + RandomLen).length() / 2, 4);
		String DATA = RSCTL + Length + code + broadening + dir + RandomLen;

		// 异或校验从RSCTL到DATA所有字节的异或值
		BCC = EncodingUtil.yihuo(EncodingUtil.change(DATA));
		// 替换串口帧序列号 DATA 异或值中的制定字符
		String retn = STX + DATA + BCC; // 拼接完整的请求
		return retn;

	}

	public String getSTX() {
		return STX;
	}

	public void setSTX(String sTX) {
		STX = sTX;
	}

	public String getRSCTL() {
		return RSCTL;
	}

	public void setRSCTL(String rSCTL) {
		RSCTL = rSCTL;
	}

	public String getLength() {
		return Length;
	}

	public void setLength(String length) {
		Length = length;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getBroadening() {
		return broadening;
	}

	public void setBroadening(String broadening) {
		this.broadening = broadening;
	}

	public String getBCC() {
		return BCC;
	}

	public void setBCC(String bCC) {
		BCC = bCC;
	}

	public String getDir() {
		return dir;
	}

	public void setDir(String dir) {
		this.dir = dir;
	}

	public String getRandomLen() {
		return RandomLen;
	}

	public void setRandomLen(String randomLen) {
		RandomLen = randomLen;
	}

	public static void main(String[] args) {
		GetRandomRequest gr = new GetRandomRequest();
		String com = gr.command("01", "04");
		System.out.println(com);
	}
}
